<?php
/**
@author 
@copyright 2008
 */
// Load JsHttpRequest backend.
require_once $_SERVER['DOCUMENT_ROOT']."/admin/js/JsHttpRequest/JsHttpRequest.php";
// Create main library object. You MUST specify page encoding!
$JsHttpRequest =& new JsHttpRequest("UTF-8");
// Store resulting data in $_RESULT array (will appear in req.responseJs).
/**
 * CONFIGURATION
 */
define ("DIRECT_ACCESS", true);
require_once ($_SERVER['DOCUMENT_ROOT']."/conf/conf.php");
$smarty=init_smarty("admin");
$mod_dir = 'content';
$module = array(
	'incl_dir' => 'modules/'.$mod_dir."/",
	'tmpl_dir' => 'modules/'.$mod_dir."/templates/"
);
$obj = new Page;
$cat = new CategoryWizard($db);
$user = new User;
/**
 * Если указано действия, то дальнейшее управление передается "вилке" выбора
 */
if (isset($_REQUEST['action']))
	$action = $_REQUEST['action'];
/**
 * В случае отсутствия явного указания действия Ajax прекратит работу и выдаст алерт
 */
else die("Ошибка! Не указано действие!");
if($user->check_user() != false)
{
	/**
	 *	START
	 */
	switch($action)
	{
		case 'recurse':
			if(isset($_REQUEST['parent']) and $_REQUEST['parent']!='')
			{
				$parent=intval($_REQUEST['parent']);
				$categories=$Cat->recurse($parent,0,0,1);
				//print $parent;
				$smarty->assign("categories",$categories);
				switch($_REQUEST['type'])
				{
					case 'select':
						$output = $smarty->fetch("templates/other/select_cat.html");
						break;
					case 'checkbox':
						$output = $smarty->fetch("templates/other/select_cat_checkbox.html");
						break;
					case 'radio':
						$output = $smarty->fetch("templates/other/select_cat_radio.html");
						break;
				}
				
			}
			$GLOBALS['_RESULT']=array('output'=>$output);
			break;
		case 'addAdress':
			if(isset($_REQUEST['parent']) and $_REQUEST['parent']!='')
			{
			}
			break;
		case 'addPhotoForm':
			$items_num = 0;
			if(isset($_REQUEST['items_num']))
			{
				$items_num = intval($_REQUEST['items_num']);
			}
			$smarty->assign("images_num",$items_num);
			$template = "modules/video/templates/photo.inc.html";
			$output = $smarty->fetch($template);
			$GLOBALS['_RESULT']=array('output'=>$output);
		break;
		/** //TODO: archieve - change event status to 'archive'
		 */
		case 'addVideoForm':
			$items_num = 0;
			if(isset($_REQUEST['items_num']))
			{
				$items_num = intval($_REQUEST['items_num']);
			}
			$smarty->assign("videos_num",$items_num);
			$template = "modules/video/templates/video.inc.html";
			$output = $smarty->fetch($template);
			$GLOBALS['_RESULT']=array('output'=>$output);
		break;
		/** //TODO: archieve - change event status to 'archive'
		 */
		case 'archieve':
			switch($_REQUEST['type'])
			{
				case 'event':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					/** сообщения об ошибках */
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_events;
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						/** сборщик ошибок */
						$no_error = array();
						$ok=1;
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$archive = array('display' => 2);
							$archieving = $db->update($table_items,$archive,$sql_clause);
							$ok = 1;
							$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias));
						}
						else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
					break;
			}
			break;
		/** //TODO: unarchieve - change event status to 'archive'
		 */
		case 'unarchieve':
			switch($_REQUEST['type'])
			{
				case 'event':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					/** сообщения об ошибках */
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_events;
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						/** сборщик ошибок */
						$no_error = array();
						$ok=1;
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$archive = array('display' => 1);
							$archieving = $db->update($table_items,$archive,$sql_clause);
							$ok = 1;
							$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias));
						}
						else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
					break;
			}
			break;
		/** //TODO: del_item - ajax deleting of item by $type
		 */
		case 'del_item':
			switch($_REQUEST['type'])
			{
				//TODO: del_item->adress
				case 'adress':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items = $table_adress;
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
							$GLOBALS['_RESULT']=array('output'=>$output);
						}
					}
					break;
				//TODO: del_item->video
				case 'video':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_videos;
						$item_dir = "/videos/";
						$template = "video";
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
							@unlink($path_to_delete);
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
							$GLOBALS['_RESULT']=array('output'=>$output);
						}
					}
					break;
				//TODO: del_item->photo
				case 'photo':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_photoes;
						$item_dir = "/photoes/";
						$template = "photo";
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
							@unlink($path_to_delete."_small.jpg");
							@unlink($path_to_delete."_med.jpg");
							@unlink($path_to_delete.".jpg");
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
							$GLOBALS['_RESULT']=array('output'=>$output);
						}
					}
					break;
				//TODO: del_item->price
				case 'price':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_prices;
						$item_dir = "/prices/";
						$template = "price";
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
							@unlink($path_to_delete);
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
							$GLOBALS['_RESULT']=array('output'=>$output);
						}
					}
					break;
				//TODO: del_item->good
				case 'good':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_goods;
						$item_dir = "/goods/";
						$template = "good";
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
							@unlink($path_to_delete."_small.jpg");
							@unlink($path_to_delete."_med.jpg");
							@unlink($path_to_delete.".jpg");
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
							$GLOBALS['_RESULT']=array('output'=>$output);
						}
					}
					break;
				//TODO: del_item->event
				case 'event':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_events;
						/** директория, содержащая ассоциированные файлы */
						$item_dir = "/events/";
						/** шаблон для отображения */
						$template = "event";
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						// если условие удаления не пустое
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);// форматируем условие удаления
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
							// если объект существует
							if($item != 0)
							{
								/** START 	Удаляем жанры этого события */
								$genres = $db->query("DELETE FROM $table_genres WHERE event_id='".$item['id']."'");
								/** END 	Удаляем жанры этого события */
								/** START 	Удаляем комментарии этого события */
								$comments = $db->query("DELETE FROM ".PFX."comments WHERE obj_id='".$item['id']."' AND module = 'afisha'");
								/** END 	Удаляем комментарии этого события */
								/** START 	Удаляем сеансы этого события */
								$seances = $db->fetch_list("SELECT id FROM $table_afisha WHERE event_id='".$item['id']."'");
								// если есть сеансы
								if(!empty($seances))
								{
									$error_seance = false;// изначально ошибок нет
									foreach($seances as $seance=>$id)
									{
										$clause_seance = "WHERE id='".$id."'";
										$seance_del = $db->del($table_afisha,$clause_seance,__FILE__,__LINE__);
										// если ошибка
										if($seance_del=='-1')
										{
											$error_seance = true;
											$output_message[] = "Ошибка при удалении сеанса с ID #$id";// логируем ошибку
											break;
										}
									}
									if($error_seance) $error = true;// если были ошибки - запоминаем
									else{$output_message[] = "Сеансы объекта удалены";}// иначе логируем успех
								}
								/** END 	Удаляем сеансы этого события */
								// если не возникло ошибок при удалении сеансов
								if(!$error)
								{
									/** START 	Удаляем ассоциированные файлы этого события */
									$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
									@unlink($path_to_delete."_1_small.jpg");
									@unlink($path_to_delete."_1_med.jpg");
									@unlink($path_to_delete."_1.jpg");
									@unlink($path_to_delete."_2_small.jpg");
									@unlink($path_to_delete."_2_med.jpg");
									@unlink($path_to_delete."_2.jpg");
									@unlink($path_to_delete."_3_small.jpg");
									@unlink($path_to_delete."_3_med.jpg");
									@unlink($path_to_delete."_3.jpg");
									@unlink($path_to_delete."_4_small.jpg");
									@unlink($path_to_delete."_4_med.jpg");
									@unlink($path_to_delete."_4.jpg");
									@unlink($path_to_delete.".jpg");
									/** END 	Удаляем ассоциированные файлы этого события */
									
									$result=$db->del($table_items,$sql_clause);//удаляем само событие
									
									if($result!='-1'){$ok=1;$output_message[] = "Объект удален!";}
									else{$ok=0;$output_message[]="Ошибка при удалении объекта!";}
								}
								else{$ok=0;$output_message[] = "Удаление прервано! Объект не удален, но некоторые сеансы возможно были удалены в процессе";}// иначе логируем ошибку
							}
							else{$ok=0;$output_message[] = "Не найден объект для удаления!";}// иначе логируем ошибку
						}
						else{$ok=0;$output_message[] = "Недостаточно данных для идентификации объекта!";}// иначе логируем ошибку
					}
					else{$ok=0;$output_message[] = "Не выбран объект для удаления!";}// иначе логируем ошибку
					// отправляем лог и статус операции
					$GLOBALS['_RESULT']=array('output'=>implode("<br>",$output_message),'ok'=>$ok);
					break;
				//TODO: del_item->place
				case 'place':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_places;
						/** директория, содержащая ассоциированные файлы */
						$item_dir = "/places/";
						/** шаблон для отображения */
						$template = "place";
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						// если условие удаления не пустое
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);// форматируем условие удаления
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
							// если объект существует
							if($item != 0)
							{
								/** START 	Удаляем сеансы этого события */
								$seances = $db->fetch_list("SELECT id FROM $table_afisha WHERE event_id='".$item['id']."'");
								// если есть сеансы
								if(!empty($seances))
								{
									$error_seance = false;// изначально ошибок нет
									foreach($seances as $seance=>$id)
									{
										$clause_seance = "WHERE id='".$id."'";
										$seance_del = $db->del($table_afisha,$clause_seance,__FILE__,__LINE__);
										// если ошибка
										if($seance_del=='-1')
										{
											$error_seance = true;
											$output_message[] = "Ошибка при удалении сеанса с ID #$id";// логируем ошибку
											break;
										}
									}
									if($error_seance) $error = true;// если были ошибки - запоминаем
									else{$output_message[] = "Сеансы объекта удалены";}// иначе логируем успех
								}
								/** END 	Удаляем сеансы этого события */
								// если не возникло ошибок при удалении сеансов
								if(!$error)
								{
									/** START 	Удаляем ассоциированные файлы этого события */
									$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
									@unlink($path_to_delete."_1_small.jpg");
									@unlink($path_to_delete."_1_med.jpg");
									@unlink($path_to_delete."_1.jpg");
									@unlink($path_to_delete.".jpg");
									/** END 	Удаляем ассоциированные файлы этого события */
									
									$result=$db->del($table_items,$sql_clause);//удаляем само событие
									
									if($result!='-1'){$ok=1;$output_message[] = "Объект удален";}
									else{$ok=0;$output_message[]="Ошибка при удалении объекта!";}
								}
								else{$ok=0;$output_message[] = "Удаление прервано! Объект не удален, но некоторые сеансы возможно были удалены в процессе";}// иначе логируем ошибку
							}
							else{$ok=0;$output_message[] = "Не найден объект для удаления!";}// иначе логируем ошибку
						}
						else{$ok=0;$output_message[] = "Недостаточно данных для идентификации объекта!";}// иначе логируем ошибку
					}
					else{$ok=0;$output_message[] = "Не выбран объект для удаления!";}// иначе логируем ошибку
					// отправляем лог и статус операции
					$GLOBALS['_RESULT']=array('output'=>implode("<br>",$output_message),'ok'=>$ok);
					break;
				//TODO: del_item->seance
				case 'seance':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_afisha;
						/** шаблон для отображения */
						$template = "seance";
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						// если условие удаления не пустое
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);// составляем условие
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
							// если объект существует
							if($item!=0)
							{
								/** Удаление объекта */
								$result=$db->del($table_items,$sql_clause);
								// если удачно
								if($result!='-1'){$ok = 1;$output_message = "Объект удален!";}// логируем успех
								else{$ok = 0;$output="Ошибка при удалении объекта!";}// иначе логируем ошибку
							}
							else{$ok = 0;$output="Не найден объект для удаления";}// иначе логируем ошибку
						}
						else{$ok = 0;$output="Недостаточно данных для идентификации объекта";}// иначе логируем ошибку
					}
					else{$ok = 0;$output="Не выбран объект для удаления";}// иначе логируем ошибку
					// отправляем лог и статус операции
					$GLOBALS['_RESULT']=array('output'=>$output_message,'ok'=>$ok);
					break;
				//TODO: del_item->page
				case 'page':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$db->pfx."site_content";
						/** шаблон для отображения */
						$template = "seance";
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						// если условие удаления не пустое
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);// составляем условие
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
							// если объект существует
							if($item!=0)
							{
								/** Удаление объекта */
								$result=$db->del($table_items,$sql_clause);
								// если удачно
								if($result!='-1'){$ok = 1;$output_message = "Объект удален!";}// логируем успех
								else{$ok = 0;$output="Ошибка при удалении объекта!";}// иначе логируем ошибку
							}
							else{$ok = 0;$output="Не найден объект для удаления";}// иначе логируем ошибку
						}
						else{$ok = 0;$output="Недостаточно данных для идентификации объекта";}// иначе логируем ошибку
					}
					else{$ok = 0;$output="Не выбран объект для удаления";}// иначе логируем ошибку
					// отправляем лог и статус операции
					$GLOBALS['_RESULT']=array('output'=>$output_message,'ok'=>$ok);
					break;
				//TODO: del_item->opinion
				case 'opinion':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_opinions;
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							if($item!=0)
							{
								$result=$db->del($table_items,$sql_clause);
								if($result!='-1')
									$output = "Удалено";
								else $output="Ошибка при удалении!";
							}
							else $output="Не указан объект для удаления";
						}
						else $output="Не указан объект для удаления";
					}
					else $output="Не указан объект для удаления";
					$GLOBALS['_RESULT']=array('output'=>$output);
					break;
				//TODO: del_item->new
				case 'new':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_news;
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							if($item!=0)
							{
								$result=$db->del($table_items,$sql_clause);
								if($result!='-1')
									$output = "Удалено";
								else $output="Ошибка при удалении!";
							}
							else $output="Не указан объект для удаления";
						}
						else $output="Не указан объект для удаления";
					}
					else $output="Не указан объект для удаления";
					$GLOBALS['_RESULT']=array('output'=>$output);
					break;
				//TODO: del_item->page
				case 'page':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
					{
						$table_items=$table_pages;
						$clause=array();
						$sql_clause='';
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							if($item!=0)
							{
								$result=$db->del($table_items,$sql_clause);
								if($result!='-1')
									$output = "Удалено";
								else $output="Ошибка при удалении!";
							}
							else $output="Не указан объект для удаления";
						}
						else $output="Не указан объект для удаления";
					}
					else $output="Не указан объект для удаления";
					$GLOBALS['_RESULT']=array('output'=>$output);
					break;
			}
			break;
		/** //TODO: del_item_attachment - ajax deleting of item attachment by $type
		 */
		case 'del_item_attachment':
			switch($_REQUEST['type'])
			{
				//TODO: del_item_attachment->event
				case 'event':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					/** сообщения об ошибках */
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_events;
						/** шаблон для отображения */
						$template = "seance";
						/** директория, содержащая ассоциированные файлы */
						$item_dir = '/events/';
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						/** сборщик ошибок */
						$no_error = array();
						/** что именно удаляем */
						$deleteType = '';
						$deleteType = strval($_REQUEST['deleteType']);
						$ok=1;
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							if($item!=0)
							{
								if($deleteType != '')
								{
									switch($deleteType)
									{
										case 'video':
											if(intval($item['video']) != 0)
											{
												$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
												if(file_exists($path_to_delete.".flv")) $error = unlink($path_to_delete.".flv");
												if(!$error)
												{
													$ok = 1;
												}
												else $ok = 0;
												if($ok == 1)
												{
													$update_item = array('video' => '0');
													$db->update($table_items,$update_item,$sql_clause);
													$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
												}
												else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
											}
											else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
											break;
										case 'image1':
											if(intval($item['img1']) != 0)
											{
												$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
												if(file_exists($path_to_delete."_1_small.jpg")) $no_error[] = unlink($path_to_delete."_1_small.jpg");
												if(file_exists($path_to_delete."_1_med.jpg")) $no_error[] = unlink($path_to_delete."_1_med.jpg");
												if(file_exists($path_to_delete."_1.jpg")) $no_error[] = unlink($path_to_delete."_1.jpg");
												if(!empty($no_error) and count($no_error)!=3)
												{
													foreach($no_error as $k=>$v)
													{
														if($v === false){$ok = 0;break;}
														else{$ok = 1;}
													}
												}
												else $ok = 0;
												if($ok == 1)
												{
													$update_item = array('img1' => '0');
													$db->update($table_items,$update_item,$sql_clause);
													$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
												}
												else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
											}
											else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
											break;
										case 'image2':
											if(intval($item['img2']) != 0)
											{
												$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
												if(file_exists($path_to_delete."_2_small.jpg")) $no_error[] = unlink($path_to_delete."_2_small.jpg");
												if(file_exists($path_to_delete."_2_med.jpg")) $no_error[] = unlink($path_to_delete."_2_med.jpg");
												if(file_exists($path_to_delete."_2.jpg")) $no_error[] = unlink($path_to_delete."_2.jpg");
												if(!empty($no_error) and count($no_error)!=3)
												{
													foreach($no_error as $k=>$v)
													{
														if($v === false){$ok = 0;break;}
														else{$ok = 1;}
													}
												}
												else $ok = 0;
												if($ok == 1)
												{
													$update_item = array('img2' => '0');
													$db->update($table_items,$update_item,$sql_clause);
													$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
												}
												else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
											}
											else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
											break;
										case 'image3':
											if(intval($item['img3']) != 0)
											{
												$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
												if(file_exists($path_to_delete."_3_small.jpg")) $no_error[] = unlink($path_to_delete."_3_small.jpg");
												if(file_exists($path_to_delete."_3_med.jpg")) $no_error[] = unlink($path_to_delete."_3_med.jpg");
												if(file_exists($path_to_delete."_3.jpg")) $no_error[] = unlink($path_to_delete."_3.jpg");
												if(!empty($no_error) and count($no_error)!=3)
												{
													foreach($no_error as $k=>$v)
													{
														if($v === false){$ok = 0;break;}
														else{$ok = 1;}
													}
												}
												else $ok = 0;
												if($ok == 1)
												{
													$update_item = array('img3' => '0');
													$db->update($table_items,$update_item,$sql_clause);
													$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
												}
												else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
											}
											else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
											break;
										case 'image4':
											if(intval($item['img4']) != 0)
											{
												$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
												if(file_exists($path_to_delete."_4_small.jpg")) $no_error[] = unlink($path_to_delete."_4_small.jpg");
												if(file_exists($path_to_delete."_4_med.jpg")) $no_error[] = unlink($path_to_delete."_4_med.jpg");
												if(file_exists($path_to_delete."_4.jpg")) $no_error[] = unlink($path_to_delete."_4.jpg");
												if(!empty($no_error) and count($no_error)!=3)
												{
													foreach($no_error as $k=>$v)
													{
														if($v === false){$ok = 0;break;}
														else{$ok = 1;}
													}
												}
												else $ok = 0;
												if($ok == 1)
												{
													$update_item = array('img4' => '0');
													$db->update($table_items,$update_item,$sql_clause);
													$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
												}
												else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
											}
											else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
											break;
									}
								}
								else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_DELETE_ATTACHMENT_TYPE',$action,$mod_alias),__FILE__,__LINE__);}
							}
							else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
						}
						else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
					break;
				//TODO: del_item_attachment->video
				case 'video':
					/** статус операции */
					$ok = 0;
					/** лог */
					$output_message = array();
					/** сообщения об ошибках */
					// если условие удаления содержит реальный ID объекта (ID!=0)
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
					{
						/** таблица, содержащая информацию об объекте */
						$table_items=$table_video;
						/** шаблон для отображения */
						$template = "seance";
						/** директория, содержащая ассоциированные файлы */
						$item_dir = '/video/';
						/** массив - сборщик условий */
						$clause=array();
						/** флаг глобальной ошибки */
						$error = false;
						/** строка для формирования условия */
						$sql_clause='';
						/** сборщик ошибок */
						$no_error = array();
						/** что именно удаляем */
						$deleteType = '';
						$deleteType = strval($_REQUEST['deleteType']);
						$is_video = preg_match("/^video(\d+)$/",$deleteType,$res_video);
						$is_image = preg_match("/^image(\d+)$/",$deleteType,$res_image);
						if($is_video == 1)
						{
							$find = "video";
							$itemIdToDelete = $res_video[1];
							$table_attach = $table_video_videos;
							
							$delete_clause = "WHERE id = '$itemIdToDelete'";
						}
						elseif($is_image == 1)
						{
							$find = "image";
							$itemIdToDelete = $res_image[1];
							$table_attach = $table_video_images;
							$pathToDelete = ROOT_DIR.UPLOAD."video/images/".$itemIdToDelete;
							$output_message[] = $pathToDelete;
							$delete_clause = "WHERE id = '$itemIdToDelete'";
						}
						$ok=1;
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							if($item !== false)
							{
								$item_attach = $db->fetch_one("SELECT * FROM $table_attach $delete_clause");
								if($item_attach !== false)
								{
									switch($find)
									{
										case 'video':
											$path_to_delete = ROOT_DIR.UPLOAD."video/videos/".$item_attach['id'];
											if(file_exists($path_to_delete.".flv")) $error = unlink($path_to_delete.".flv");
											if(!$error)
											{
												$ok = 1;
											}
											else $ok = 0;
											if($ok == 1)
											{
												$db->query("DELETE FROM $table_attach $delete_clause");
												$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
										break;
										case 'image':
											$path_to_delete = ROOT_DIR.UPLOAD."video/images/".$item_attach['id'];
											if(file_exists($path_to_delete."_small.jpg")) $no_error[] = unlink($path_to_delete."_small.jpg");
											if(file_exists($path_to_delete."_med.jpg")) $no_error[] = unlink($path_to_delete."_med.jpg");
											if(file_exists($path_to_delete.".jpg")) $no_error[] = unlink($path_to_delete.".jpg");
											if(!empty($no_error))
											{
												foreach($no_error as $k=>$v)
												{
													if($v === false){$ok = 0;break;}
													else{$ok = 1;}
												}
											}
											else $ok = 0;
											if($ok == 1)
											{
												$db->query("DELETE FROM $table_attach $delete_clause");
												$output_message[] = $err->constructErrorMessage("изображение, его копии, запись в БД удалены успешно",__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage("возникла ошбика при удалении изображения или его копий. Запись в БД сохранена.",__FILE__,__LINE__);}
										break;
									}
								}
								else
								{
									$ok = 0;$output_message[] = 
									$err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);
								}
							}
							else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
						}
						else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
					$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
					break;
				//TODO: del_item_attachment->good
				case 'good':
					if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']))
					{
						$table_items=$table_goods;
						$item_dir = "/goods/";
						$template = "good";
						$clause=array();
						$sql_clause='';
						$no_error = array();
						$ok=1;
						$clause_array=$_REQUEST['clause_array'];
						foreach($clause_array as $key=>$value)
						{
							$clause[]="`".$key."`='".$value."'";
						}
						if(!empty($clause))
						{
							$sql_clause="WHERE ".implode(' AND ',$clause);
							$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
							if($item!=0)
							{
								$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
								if(file_exists($path_to_delete."_small.jpg")) $no_error[] = unlink($path_to_delete."_small.jpg");
								if(file_exists($path_to_delete."_med.jpg")) $no_error[] = unlink($path_to_delete."_med.jpg");
								if(file_exists($path_to_delete.".jpg")) $no_error[] = unlink($path_to_delete.".jpg");
								if(!empty($no_error) and count($no_error)!=3)
								{
									foreach($no_error as $k=>$v)
									{
										if($v===false) $ok = 0;
									}
								}
								else $ok = 0;
								if($ok==1)
								{
									$update_item = array(
										'photo' 	=> '0'
									);
									$db->update($table_items,$update_item,$sql_clause);
									$message = "Удалено";
								}
								else $message = "Ошибка при удалении";
								
							}
						}
						else
						{
							$ok=0;
							$message = "Не указан объект для удаления";
						}
					}
					else
					{
						$ok=0;
						$message = "Не указан объект для удаления";
					}
					$GLOBALS['_RESULT']=array('ok'=>$ok,'message'=>$message);
					break;
			}
			break;
		/** //TODO: upload_file - uploading file with $type for Catalog
		 **/
		case 'upload_file':
			switch($_REQUEST['type'])
			{
				case 'price':
					$table_items = $table_prices;
					$item_dir = "/prices/";
					$template = "price";
					$allowed_types=array("xls","doc","rar","zip");
					$obj_id = intval($_REQUEST['obj_id']);
					$filename=$_FILES['filename'];
					unset($_FILES['filename']);
					if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
					{
						$tmp_upload_file=explode(".",strtolower(basename($filename['name'])));
						// если еще нет ID фотки - вставляем в БД новые данные
						if($_REQUEST['id']=='')
						{
							$insert_item['type'] = $tmp_upload_file[1];
							$insert_item['filesize']=$filename['size'];
							$insert_item['catalog_id']=$obj_id;
							$db->insert($table_items,$insert_item);
							$id=$db->last_id();
							$id=intval($id);
						}
						// иначе
						else
						{
							$id=intval($_REQUEST['id']);
						}
						$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
						$update_item = array(
							'type' 		=> $tmp_upload_file[1],
							'filesize' 	=> $filename['size']
						);
						/* Сначала извлечем информацию об уже имеющемся файле */
						$name=$id;
						$dir="/".$mod_dir."/".$obj_id.$item_dir;
						/** START 	Если есть файлы под этим номером в папке, удаляем **/
						$old_file = $db->fetch_one("SELECT * FROM $table_items $clause_file");// старый файл
						if($old_file!=0)
						{
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$obj_id.$item_dir.$name.".".$old_file['type'];
							if(file_exists($path_to_delete)) @unlink($path_to_delete);
						}
						/** END 	Если есть файлы под этим номером в папке, удаляем **/
						
						$is_ok=upload_file_ajax($filename,$name,$dir,$allowed_types);
						if($is_ok)
						{
							$db->update($table_items,$update_item,$clause_file);
							$message="Файл загружен";
							print $message;
							$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
							$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
							$smarty->assign("item",$item);
							$smarty->assign("do","edit");
							$smarty->assign("obj_id",$obj_id);
							$smarty->assign("module",$module);
							$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
							$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
						}
						else
						{
							$output="Загрузка НЕ удалась!";
							print $output;
						}
					}
					else print "Это не файл!";
				break;
				case 'video':
					$table_items = $table_video;
					$item_dir = "/video/";
					$template = "video";
					$allowed_types=array("avi","mpg","flv","mov");
					$obj_id = intval($_REQUEST['obj_id']);
					$filename=$_FILES['filename'];
					unset($_FILES['filename']);
					if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
					{
						$tmp_upload_file=explode(".",strtolower(basename($filename['name'])));
						if($_REQUEST['id']=='')
						{
							$insert_item['type'] = $tmp_upload_file[1];
							$insert_item['filesize']=$filename['size'];
							$insert_item['catalog_id']=$obj_id;
							$db->insert($table_items,$insert_item);
							$id=$db->last_id();
							$id = intval($id);
						}
						else
						{
							$id=intval($_REQUEST['id']);
						}
						$name=$id;
						$dir="/".$mod_dir."/".$_REQUEST['obj_id'].$item_dir;
						/** START 	Если есть файлы под этим номером в папке, удаляем **/
						$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
						$update_item = array(
							'type' 		=> $tmp_upload_file[1],
							'filesize' 	=> $filename['size']
						);
							/* Сначала извлечем информацию об уже имеющемся файле */
						$old_file = $db->fetch_one("SELECT * FROM $table_items $clause_file");// старый файл
						if($old_file!=0)
						{
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$obj_id.$item_dir.$name.".".$old_file['type'];
							if(file_exists($path_to_delete)) @unlink($path_to_delete);
						}
						/** END 	Если есть файлы под этим номером в папке, удаляем **/
						
						$is_ok=upload_file_ajax($filename,$name,$dir,$allowed_types);
						if($is_ok)
						{
							$db->update($table_items,$update_item,$clause_file);
							$message="Файл загружен";
							print $message;
							$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
							$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
							$smarty->assign("item",$item);
							$smarty->assign("do","edit");
							$smarty->assign("obj_id",$obj_id);
							$smarty->assign("module",$module);
							$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
							$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
						}
						else
						{
							$output="Загрузка НЕ удалась!";
							print $output;
						}
					}
					else print "Это не файл!";
				break;
				case 'good':
					$table_items = $table_goods;
					$item_dir = "/goods/";
					$template = "good";
					$obj_id = intval($_REQUEST['obj_id']);
					$filename=$_FILES['filename'];
					unset($_FILES['filename']);
					if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
					{
						if($_REQUEST['id']=='')
						{
							$insert_item['catalog_id']=$obj_id;
							$db->insert($table_items,$insert_item);
							$id=$db->last_id();
							$id=intval($id);
						}
						else
						{
							$id=intval($_REQUEST['id']);
						}
						$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
						$name=$id;
						$dir="/".$mod_dir."/".$obj_id.$item_dir;
						$sizes = array(100,300,800);
						$is_ok=upload_image_ajax($filename,$name,$dir,$sizes,0);
						if($is_ok)
						{
							$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
							$update_file['photo']='1';
							$db->update($table_items,$update_file,$clause_file);
							$message="Файл загружен";
							print $message;
							$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
							$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
							$smarty->assign("item",$item);
							$smarty->assign("do","edit");
							$smarty->assign("obj_id",$obj_id);
							$smarty->assign("module",$module);
							$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
							$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
						}
						else
						{
							$output="Загрузка НЕ удалась!";
							print $output;
						}
					}
					else print "Это не файл!";
				break;
				case 'photo':
					$table_items = $table_photoes;
					$item_dir = "/photoes/";
					$template = "photo";
					$obj_id = intval($_REQUEST['obj_id']);
					$filename=$_FILES['filename'];
					unset($_FILES['filename']);
					if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
					{
						if($_REQUEST['id']=='')
						{
							$insert_item['catalog_id']=$obj_id;
							$db->insert($table_items,$insert_item);
							$id=$db->last_id();
							intval($id);
						}
						else
						{
							$id=intval($_REQUEST['id']);
						}
						$name=$id;
						$dir="/".$mod_dir."/".$obj_id.$item_dir;
						$sizes = array(100,300,800);
						$is_ok=upload_image_ajax($filename,$name,$dir,$sizes,0);
						if($is_ok)
						{
							$message="Файл загружен";
							print $message;
							$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
							$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
							$smarty->assign("item",$item);
							$smarty->assign("do","edit");
							$smarty->assign("obj_id",$obj_id);
							$smarty->assign("module",$module);
							$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
							$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
						}
						else
						{
							$output="Загрузка НЕ удалась!";
							print $output;
						}
					}
					else print "Это не файл!";
				break;
			}
		break;
	    //TODO: turn_off
	    case 'turn_off':
	        /** Статус операции */
	        $ok = 0;
	        /** Лог ошибок */
	        $output_message = array();
	        /** Если присутствует тип объекта */
	        if(isset($_REQUEST['type']) and strval($_REQUEST['type']) != '')
	        {
	            switch(strval($_REQUEST['type']))
	            {
	                //TODO: turn_off->company
	                case 'company':
	                    // Check is ID isset into clause array (ID!=0)
	                    if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
	                    {
	                        /** Table of items */
	                        $table_items = $table_company_catalog;
	                        /** Array with "WHERE" clauses */
	                        $clause=array();
	                        /** String to join clauses into big one */
	                        $sql_clause='';
	                        $clause_array=$_REQUEST['clause_array'];
	                        foreach($clause_array as $key=>$value)
	                        {
	                            $clause[]="`".mysql_real_escape_string($key)."`='".mysql_real_escape_string($value)."'";
	                        }
	                        if(!empty($clause))
	                        {
	                            $sql_clause="WHERE ".implode(' AND ',$clause);
	                            $turned_item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
	                            if(!empty($turned_item))
	                            {
	                                $turn_this['status'] = 0;
	                                $turn_off_item_query = $db->update($table_items,$turn_this,$sql_clause);
	                                $ok = 1;
	                                $output_message[] = "Объект скрыт";
	                            }
	                            else{$ok = 0;$output_message[] = "Указанный объект не существует. Операция прервана";}
	                        }
	                        else{$ok = 0;$output_message[] = "Недостаточно условий для определения объекта. Операция прервана";}
	                    }
	                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
	                break;
	            }
	        }
	        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
	        $GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
	    break;
	    //TODO: turn_on
	    case 'turn_on':
	        /** Статус операции */
	        $ok = 0;
	        /** Лог ошибок */
	        $output_message = array();
	        /** Если присутствует тип объекта */
	        if(isset($_REQUEST['type']) and strval($_REQUEST['type']) != '')
	        {
	            switch(strval($_REQUEST['type']))
	            {
	                //TODO: turn_on->company
	                case 'company':
	                    // Check is ID isset into clause array (ID!=0)
	                    if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
	                    {
	                        /** Table of items */
	                        $table_items = $table_company_catalog;
	                        /** Array with "WHERE" clauses */
	                        $clause=array();
	                        /** String to join clauses into big one */
	                        $sql_clause='';
	                        $clause_array=$_REQUEST['clause_array'];
	                        foreach($clause_array as $key=>$value)
	                        {
	                            $clause[]="`".mysql_real_escape_string($key)."`='".mysql_real_escape_string($value)."'";
	                        }
	                        if(!empty($clause))
	                        {
	                            $sql_clause="WHERE ".implode(' AND ',$clause);
	                            $turned_item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
	                            if(!empty($turned_item))
	                            {
	                                $turn_this['status'] = 2;
	                                $turn_off_item_query = $db->update($table_items,$turn_this,$sql_clause);
	                                $ok = 1;
	                                $output_message[] = "Объект включен";
	                            }
	                            else{$ok = 0;$output_message[] = "Указанный объект не существует. Операция прервана";}
	                        }
	                        else{$ok = 0;$output_message[] = "Недостаточно условий для определения объекта. Операция прервана";}
	                    }
	                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
	                break;
	            }
	        }
	        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
	        $GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
	    break;
	    //TODO: moderate
	    case 'moderate':
	        /** Статус операции */
	        $ok = 0;
	        /** Лог ошибок */
	        $output_message = array();
	        /** Если присутствует тип объекта */
	        if(isset($_REQUEST['type']) and strval($_REQUEST['type']) != '')
	        {
	            switch(strval($_REQUEST['type']))
	            {
	                //TODO: moderate->company
	                case 'company':
	                    // Check is ID isset into clause array (ID!=0)
	                    if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
	                    {
	                        /** Table of items */
	                        $table_items = $table_company_catalog;
	                        /** Array with "WHERE" clauses */
	                        $clause=array();
	                        /** String to join clauses into big one */
	                        $sql_clause='';
	                        $clause_array=$_REQUEST['clause_array'];
	                        foreach($clause_array as $key=>$value)
	                        {
	                            $clause[]="`".mysql_real_escape_string($key)."`='".mysql_real_escape_string($value)."'";
	                        }
	                        if(!empty($clause))
	                        {
	                            $sql_clause="WHERE ".implode(' AND ',$clause);
	                            $turned_item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
	                            if(!empty($turned_item))
	                            {
	                                $turn_this['status'] = 1;
	                                $turn_off_item_query = $db->update($table_items,$turn_this,$sql_clause);
	                                $ok = 1;
	                                $output_message[] = "Объект отправлен на модерацию";
	                            }
	                            else{$ok = 0;$output_message[] = "Указанный объект не существует. Операция прервана";}
	                        }
	                        else{$ok = 0;$output_message[] = "Недостаточно условий для определения объекта. Операция прервана";}
	                    }
	                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
	                break;
	            }
	        }
	        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
	        $GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
	    break;
	    //TODO: tableDnD - изменение порядка в группе элементов
	    case 'tableDnD':
	        /** Статус операции */
	        $ok = 0;
	        /** Лог ошибок */
	        $output_message = array();
	        /** Table of items */
	        $table_items = $obj->tree;
	         // Check is array isset into clause array (ID!=0)
	        if(isset($_REQUEST['table_items']) and !empty($_REQUEST['table_items']))
	        {
	        	/** регулярное выражение для вычленения ID */
	        	$regexp = "/^items_(\d+)$/";
	            /** Array with "WHERE" clauses */
	            $clause=array();
	            /** String to join clauses into big one */
	            $sql_clause='';
	            $clause_array=$_REQUEST['table_items'];
	            foreach($clause_array as $key=>$value)
	            {
	            	$is_items_id = preg_match($regexp,$value,$catching);
	            	if(isset($catching[1]) and intval($catching[1]) != 0)
	            	{
	            		$sql_clause = '';
	                    $sql_clause = "WHERE id = '".intval($catching[1])."'";
	                    $sql_update = array('order_num'=>intval($key));
	                    $res = $db->update($table_items,$sql_update,$sql_clause);
	                    if(!$res)
	                    {
	                    	die("неудачная попытка апдейта таблицы!");
	                    }
	            	}
	            }
	            $ok = 1;
	        }
	        else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
	        if($ok == 0) die(implode("<br>",$output_message));
	        else die("ok");
	        //$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
	    break;
	}
	/**
	 *	END
	 */
}
?>